home *** CD-ROM | disk | FTP | other *** search
- unit BMListU2;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- ExtCtrls, DBCtrls, StdCtrls, Buttons, DB, DBTables, Grids, DBGrids;
-
- type
- TTableSet=record
- Table1,Table2:TTable;
- end;
-
- TForm1 = class(TForm)
- DBGrid1: TDBGrid;
- Table1: TTable;
- Table2: TTable;
- DataSource1: TDataSource;
- BitBtn1: TBitBtn;
- Panel1: TPanel;
- GroupBox1: TGroupBox;
- lblName1: TLabel;
- lblSelected1: TLabel;
- GroupBox2: TGroupBox;
- lblName2: TLabel;
- lblSelected2: TLabel;
- lblAttachedTable: TLabel;
- lblAttachedSelected: TLabel;
- BitBtn2: TBitBtn;
- DBNavigator1: TDBNavigator;
- Bevel1: TBevel;
- Timer1: TTimer;
- Label1: TLabel;
- Label2: TLabel;
- Label3: TLabel;
- Label4: TLabel;
- procedure BitBtn1Click(Sender: TObject);
- procedure FormShow(Sender: TObject);
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
- procedure BitBtn2Click(Sender: TObject);
- procedure Timer1Timer(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- private
- { Private declarations }
- TableSet:TTableSet;
- SaveList:TStringList;
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.DFM}
-
- procedure TForm1.BitBtn1Click(Sender: TObject);
- procedure SwapTables(var T1,T2:TTable);
- var
- T3:TTable;
- begin
- T3:=T1;
- T1:=T2;
- T2:=T3;
- DataSource1.DataSet:=t1;
- lblAttachedTable.Caption:=t1.TableName;
- end;
- procedure RestoreSelectedRows(SR:TBookmarkList;table:TTable);
- var
- i:integer;
- begin
- for i:=0 to SaveList.Count-1 do
- begin
- table.GotoBookmark(Pointer(SaveList.Strings[i]));
- SR.CurrentRowSelected:=True;
- end;
- end;
- var
- i:integer;
- TempList:TStringList;
- begin
- //First item in TableSet is table connected to grid
- //Second item in TableSet is table with list attached
- TempList:=TStringList.Create;
- try
- // Save grid selections
- for i:=0 to DBGrid1.SelectedRows.Count-1 do
- TempList.Add(DBGrid1.SelectedRows.Items[i]);
- with TableSet do SwapTables(Table1,Table2);
- RestoreSelectedRows(DBGrid1.SelectedRows,TableSet.Table1);
- // save swapped out bookmarks
- SaveList.Clear;
- SaveList.AddStrings(TempList);
- finally
- TempList.Clear;
- TempList.Free;
- end;
- end;
-
- procedure TForm1.FormShow(Sender: TObject);
- begin
- try
- if not Table1.Active then Table1.Open;
- if not Table2.Active then Table2.Open;
- Timer1.enabled:=True;
- except
- MessageDlg('Please check that the DBDEMOS alias is defined'+#10
- +'and that COUNTRY.DB and BIOLIFE.DB exist',
- mtInformation,[mbOK],0);
- Close;
- end;
- end;
-
- procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
- begin
- Timer1.Enabled:=False;
- end;
-
- procedure TForm1.BitBtn2Click(Sender: TObject);
- begin
- with DBGrid1.SelectedRows do
- CurrentRowSelected:=not CurrentRowSelected;
- end;
-
- procedure TForm1.Timer1Timer(Sender: TObject);
- procedure SetCaptions(label1,label2:TLabel);
- begin
- Label1.Caption:=IntToStr(DBGrid1.SelectedRows.Count);
- Label2.Caption:=IntToStr(SaveList.Count);
- end;
- begin
- lblAttachedSelected.Caption:=IntToStr(DBGrid1.SelectedRows.Count);
- if DBGrid1.DataSource.DataSet=Table1 then
- SetCaptions(lblSelected1,lblSelected2)
- else
- SetCaptions(lblSelected2,lblSelected1);
- end;
-
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- TableSet.Table1:=Self.Table1;
- lblName1.Caption:=Table1.TableName;
- TableSet.Table2:=Self.Table2;
- lblName2.Caption:=Table2.TableName;
- lblSelected1.Caption:='0';
- lblSelected2.Caption:='0';
- SaveList:=TStringList.Create;
- end;
-
- procedure TForm1.FormDestroy(Sender: TObject);
- begin
- SaveList.Clear;
- SaveList.Free;
- if table1.Active then Table1.Close;
- if table2.Active then Table2.Close;
- end;
-
- end.
-
-